摘要
Day 7 我們已經能「按下刪除 → 立即移除一筆紀錄」。
今天加上 window.confirm:刪除前先詢問使用者,避免手滑誤刪。
同時保留 Day 7 的兩個好習慣:事件委派、多分頁同步(storage 事件)。
假設已有 STORAGE_KEY、readRecords()、writeRecords()(Day 5 進階)。
仍採事件委派,不暴露全域函式。
JavaScript:
// ---- 事件委派:監聽 <ul> click,判斷是否點到刪除按鈕 ----
document.getElementById('historyList').addEventListener('click', (e) => {
const btn = e.target.closest('button.btn-delete');
if (!btn) return; // 點到的是其他位置
const id = btn.dataset.id;
// 新增:刪除前確認
const ok = window.confirm('確定要刪除嗎?');
if (!ok) return;
const removed = deleteRecordById(id);
if (!removed) {
alert('找不到這筆紀錄,可能已被移除或在其他分頁修改。');
}
renderHistory();
});
// ---- 多分頁同步:其他分頁變更 STORAGE_KEY 時自動重繪 ----
window.addEventListener('storage', (e) => {
if (e.key === STORAGE_KEY) {
renderHistory();
}
});
// 清空全部修改 Day 7 的做法:
document.getElementById('clearBtn').addEventListener('click', () => {
if (!window.confirm('確定要清空所有紀錄嗎?')) return;
localStorage.removeItem(STORAGE_KEY);
renderHistory();
});
新增 2~3 筆資料。
點「刪除」→ 跳出確認 → 按「取消」:不刪除;按「確定」:該筆移除並重繪。
開兩個分頁同時打開本頁:在 A 分頁刪除,切到 B 分頁應自動同步(storage 事件)。
測試「清空記錄」→ 按「確定」:該筆移除並重繪。
錯誤處理:在 A 分頁刪除後,在 B 分頁對同一筆再按「刪除」時 → 出現「找不到紀錄」提示。